home *** CD-ROM | disk | FTP | other *** search
- package java.awt;
-
- import java.util.Hashtable;
-
- public class GridBagLayout implements LayoutManager {
- protected static final int MAXGRIDSIZE = 128;
- protected static final int MINSIZE = 1;
- protected static final int PREFERREDSIZE = 2;
- protected Hashtable comptable = new Hashtable();
- protected GridBagConstraints defaultConstraints = new GridBagConstraints();
- protected GridBagLayoutInfo layoutInfo;
- public int[] columnWidths;
- public int[] rowHeights;
- public double[] columnWeights;
- public double[] rowWeights;
-
- public void setConstraints(Component var1, GridBagConstraints var2) {
- this.comptable.put(var1, var2.clone());
- }
-
- public GridBagConstraints getConstraints(Component var1) {
- GridBagConstraints var2 = (GridBagConstraints)this.comptable.get(var1);
- if (var2 == null) {
- this.setConstraints(var1, this.defaultConstraints);
- var2 = (GridBagConstraints)this.comptable.get(var1);
- }
-
- return (GridBagConstraints)var2.clone();
- }
-
- protected GridBagConstraints lookupConstraints(Component var1) {
- GridBagConstraints var2 = (GridBagConstraints)this.comptable.get(var1);
- if (var2 == null) {
- this.setConstraints(var1, this.defaultConstraints);
- var2 = (GridBagConstraints)this.comptable.get(var1);
- }
-
- return var2;
- }
-
- public Point getLayoutOrigin() {
- Point var1 = new Point(0, 0);
- if (this.layoutInfo != null) {
- var1.x = this.layoutInfo.startx;
- var1.y = this.layoutInfo.starty;
- }
-
- return var1;
- }
-
- public int[][] getLayoutDimensions() {
- if (this.layoutInfo == null) {
- return new int[2][0];
- } else {
- int[][] var1 = new int[][]{new int[this.layoutInfo.width], new int[this.layoutInfo.height]};
- System.arraycopy(this.layoutInfo.minWidth, 0, var1[0], 0, this.layoutInfo.width);
- System.arraycopy(this.layoutInfo.minHeight, 0, var1[1], 0, this.layoutInfo.height);
- return var1;
- }
- }
-
- public double[][] getLayoutWeights() {
- if (this.layoutInfo == null) {
- return new double[2][0];
- } else {
- double[][] var1 = new double[][]{new double[this.layoutInfo.width], new double[this.layoutInfo.height]};
- System.arraycopy(this.layoutInfo.weightX, 0, var1[0], 0, this.layoutInfo.width);
- System.arraycopy(this.layoutInfo.weightY, 0, var1[1], 0, this.layoutInfo.height);
- return var1;
- }
- }
-
- public Point location(int var1, int var2) {
- Point var3 = new Point(0, 0);
- if (this.layoutInfo == null) {
- return var3;
- } else {
- int var5 = this.layoutInfo.startx;
-
- int var4;
- for(var4 = 0; var4 < this.layoutInfo.width; ++var4) {
- var5 += this.layoutInfo.minWidth[var4];
- if (var5 > var1) {
- break;
- }
- }
-
- var3.x = var4;
- var5 = this.layoutInfo.starty;
-
- for(var4 = 0; var4 < this.layoutInfo.height; ++var4) {
- var5 += this.layoutInfo.minHeight[var4];
- if (var5 > var2) {
- break;
- }
- }
-
- var3.y = var4;
- return var3;
- }
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- public void removeLayoutComponent(Component var1) {
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- GridBagLayoutInfo var2 = this.GetLayoutInfo(var1, 2);
- return this.GetMinSize(var1, var2);
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- GridBagLayoutInfo var2 = this.GetLayoutInfo(var1, 1);
- return this.GetMinSize(var1, var2);
- }
-
- public void layoutContainer(Container var1) {
- this.ArrangeGrid(var1);
- }
-
- public String toString() {
- return this.getClass().getName();
- }
-
- protected void DumpLayoutInfo(GridBagLayoutInfo var1) {
- System.out.println("Col\tWidth\tWeight");
-
- for(int var2 = 0; var2 < var1.width; ++var2) {
- System.out.println(var2 + "\t" + var1.minWidth[var2] + "\t" + var1.weightX[var2]);
- }
-
- System.out.println("Row\tHeight\tWeight");
-
- for(int var3 = 0; var3 < var1.height; ++var3) {
- System.out.println(var3 + "\t" + var1.minHeight[var3] + "\t" + var1.weightY[var3]);
- }
-
- }
-
- protected void DumpConstraints(GridBagConstraints var1) {
- System.out.println("wt " + var1.weightx + " " + var1.weighty + ", " + "box " + var1.gridx + " " + var1.gridy + " " + var1.gridwidth + " " + var1.gridheight + ", " + "min " + var1.minWidth + " " + var1.minHeight + ", " + "pad " + var1.insets.bottom + " " + var1.insets.left + " " + var1.insets.right + " " + var1.insets.top + " " + var1.ipadx + " " + var1.ipady);
- }
-
- protected GridBagLayoutInfo GetLayoutInfo(Container var1, int var2) {
- GridBagLayoutInfo var3 = new GridBagLayoutInfo();
- int var7 = var1.countComponents();
- var3.width = var3.height = 0;
- int var20 = -1;
- int var19 = -1;
- int[] var25 = new int[128];
- int[] var26 = new int[128];
-
- for(int var8 = 0; var8 < var7; ++var8) {
- Component var4 = var1.getComponent(var8);
- GridBagConstraints var5 = this.lookupConstraints(var4);
- int var15 = var5.gridx;
- int var16 = var5.gridy;
- int var17 = var5.gridwidth;
- if (var17 <= 0) {
- var17 = 1;
- }
-
- int var18 = var5.gridheight;
- if (var18 <= 0) {
- var18 = 1;
- }
-
- if (var15 < 0 && var16 < 0) {
- if (var19 >= 0) {
- var16 = var19;
- } else if (var20 >= 0) {
- var15 = var20;
- } else {
- var16 = 0;
- }
- }
-
- if (var15 < 0) {
- int var11 = 0;
-
- for(int var9 = var16; var9 < var16 + var18; ++var9) {
- var11 = Math.max(var11, var25[var9]);
- }
-
- var15 = var11 - var15 - 1;
- if (var15 < 0) {
- var15 = 0;
- }
- } else if (var16 < 0) {
- int var12 = 0;
-
- for(int var37 = var15; var37 < var15 + var17; ++var37) {
- var12 = Math.max(var12, var26[var37]);
- }
-
- var16 = var12 - var16 - 1;
- if (var16 < 0) {
- var16 = 0;
- }
- }
-
- int var60;
- for(var60 = var15 + var17; var3.width < var60; ++var3.width) {
- }
-
- int var64;
- for(var64 = var16 + var18; var3.height < var64; ++var3.height) {
- }
-
- for(int var38 = var15; var38 < var15 + var17; ++var38) {
- var26[var38] = var64;
- }
-
- for(int var39 = var16; var39 < var16 + var18; ++var39) {
- var25[var39] = var60;
- }
-
- Dimension var6;
- if (var2 == 2) {
- var6 = var4.preferredSize();
- } else {
- var6 = var4.minimumSize();
- }
-
- var5.minWidth = var6.width;
- var5.minHeight = var6.height;
- if (var5.gridheight == 0 && var5.gridwidth == 0) {
- var20 = -1;
- var19 = -1;
- }
-
- if (var5.gridheight == 0 && var19 < 0) {
- var20 = var15 + var17;
- } else if (var5.gridwidth == 0 && var20 < 0) {
- var19 = var16 + var18;
- }
- }
-
- if (this.columnWidths != null && var3.width < this.columnWidths.length) {
- var3.width = this.columnWidths.length;
- }
-
- if (this.rowHeights != null && var3.height < this.rowHeights.length) {
- var3.height = this.rowHeights.length;
- }
-
- var20 = -1;
- var19 = -1;
- var25 = new int[128];
- var26 = new int[128];
-
- for(int var35 = 0; var35 < var7; ++var35) {
- Component var31 = var1.getComponent(var35);
- GridBagConstraints var33 = this.lookupConstraints(var31);
- int var69 = var33.gridx;
- int var70 = var33.gridy;
- int var71 = var33.gridwidth;
- int var72 = var33.gridheight;
- if (var69 < 0 && var70 < 0) {
- if (var19 >= 0) {
- var70 = var19;
- } else if (var20 >= 0) {
- var69 = var20;
- } else {
- var70 = 0;
- }
- }
-
- if (var69 < 0) {
- if (var72 <= 0) {
- var72 += var3.height - var70;
- if (var72 < 1) {
- var72 = 1;
- }
- }
-
- int var61 = 0;
-
- for(int var40 = var70; var40 < var70 + var72; ++var40) {
- var61 = Math.max(var61, var25[var40]);
- }
-
- var69 = var61 - var69 - 1;
- if (var69 < 0) {
- var69 = 0;
- }
- } else if (var70 < 0) {
- if (var71 <= 0) {
- var71 += var3.width - var69;
- if (var71 < 1) {
- var71 = 1;
- }
- }
-
- int var65 = 0;
-
- for(int var41 = var69; var41 < var69 + var71; ++var41) {
- var65 = Math.max(var65, var26[var41]);
- }
-
- var70 = var65 - var70 - 1;
- if (var70 < 0) {
- var70 = 0;
- }
- }
-
- if (var71 <= 0) {
- var71 += var3.width - var69;
- if (var71 < 1) {
- var71 = 1;
- }
- }
-
- if (var72 <= 0) {
- var72 += var3.height - var70;
- if (var72 < 1) {
- var72 = 1;
- }
- }
-
- int var62 = var69 + var71;
- int var66 = var70 + var72;
-
- for(int var42 = var69; var42 < var69 + var71; ++var42) {
- var26[var42] = var66;
- }
-
- for(int var43 = var70; var43 < var70 + var72; ++var43) {
- var25[var43] = var62;
- }
-
- if (var33.gridheight == 0 && var33.gridwidth == 0) {
- var20 = -1;
- var19 = -1;
- }
-
- if (var33.gridheight == 0 && var19 < 0) {
- var20 = var69 + var71;
- } else if (var33.gridwidth == 0 && var20 < 0) {
- var19 = var70 + var72;
- }
-
- var33.tempX = var69;
- var33.tempY = var70;
- var33.tempWidth = var71;
- var33.tempHeight = var72;
- }
-
- int var14 = Integer.MAX_VALUE;
-
- for(int var44 = 1; var44 != Integer.MAX_VALUE; var14 = Integer.MAX_VALUE) {
- for(int var36 = 0; var36 < var7; ++var36) {
- Component var32 = var1.getComponent(var36);
- GridBagConstraints var34 = this.lookupConstraints(var32);
- if (var34.tempWidth != var44) {
- if (var34.tempWidth > var44 && var34.tempWidth < var14) {
- var14 = var34.tempWidth;
- }
- } else {
- int var63 = var34.tempX + var34.tempWidth;
- double var21 = var34.weightx;
-
- for(int var10 = var34.tempX; var10 < var63; ++var10) {
- var21 -= var3.weightX[var10];
- }
-
- if (var21 > (double)0.0F) {
- double var23 = (double)0.0F;
-
- for(int var49 = var34.tempX; var49 < var63; ++var49) {
- var23 += var3.weightX[var49];
- }
-
- for(int var50 = var34.tempX; var23 > (double)0.0F; ++var50) {
- double var27 = var3.weightX[var50];
- double var29 = var27 * var21 / var23;
- double[] var10000 = var3.weightX;
- var10000[var50] += var29;
- var21 -= var29;
- var23 -= var27;
- }
-
- double[] var87 = var3.weightX;
- var87[var63 - 1] += var21;
- }
-
- int var13 = var34.minWidth + var34.ipadx + var34.insets.left + var34.insets.right;
-
- for(int var51 = var34.tempX; var51 < var63; ++var51) {
- var13 -= var3.minWidth[var51];
- }
-
- if (var13 > 0) {
- double var76 = (double)0.0F;
-
- for(int var52 = var34.tempX; var52 < var63; ++var52) {
- var76 += var3.weightX[var52];
- }
-
- for(int var53 = var34.tempX; var76 > (double)0.0F; ++var53) {
- double var81 = var3.weightX[var53];
- int var84 = (int)(var81 * (double)var13 / var76);
- int[] var88 = var3.minWidth;
- var88[var53] += var84;
- var13 -= var84;
- var76 -= var81;
- }
-
- int[] var89 = var3.minWidth;
- var89[var63 - 1] += var13;
- }
- }
-
- if (var34.tempHeight != var44) {
- if (var34.tempHeight > var44 && var34.tempHeight < var14) {
- var14 = var34.tempHeight;
- }
- } else {
- int var67 = var34.tempY + var34.tempHeight;
- double var75 = var34.weighty;
-
- for(int var54 = var34.tempY; var54 < var67; ++var54) {
- var75 -= var3.weightY[var54];
- }
-
- if (var75 > (double)0.0F) {
- double var77 = (double)0.0F;
-
- for(int var55 = var34.tempY; var55 < var67; ++var55) {
- var77 += var3.weightY[var55];
- }
-
- for(int var56 = var34.tempY; var77 > (double)0.0F; ++var56) {
- double var82 = var3.weightY[var56];
- double var85 = var82 * var75 / var77;
- double[] var90 = var3.weightY;
- var90[var56] += var85;
- var75 -= var85;
- var77 -= var82;
- }
-
- double[] var91 = var3.weightY;
- var91[var67 - 1] += var75;
- }
-
- int var68 = var34.minHeight + var34.ipady + var34.insets.top + var34.insets.bottom;
-
- for(int var57 = var34.tempY; var57 < var67; ++var57) {
- var68 -= var3.minHeight[var57];
- }
-
- if (var68 > 0) {
- double var78 = (double)0.0F;
-
- for(int var58 = var34.tempY; var58 < var67; ++var58) {
- var78 += var3.weightY[var58];
- }
-
- for(int var59 = var34.tempY; var78 > (double)0.0F; ++var59) {
- double var83 = var3.weightY[var59];
- int var86 = (int)(var83 * (double)var68 / var78);
- int[] var92 = var3.minHeight;
- var92[var59] += var86;
- var68 -= var86;
- var78 -= var83;
- }
-
- int[] var93 = var3.minHeight;
- var93[var67 - 1] += var68;
- }
- }
- }
-
- var44 = var14;
- }
-
- if (this.columnWidths != null) {
- for(int var45 = 0; var45 < this.columnWidths.length; ++var45) {
- if (var3.minWidth[var45] < this.columnWidths[var45]) {
- var3.minWidth[var45] = this.columnWidths[var45];
- }
- }
- }
-
- if (this.rowHeights != null) {
- for(int var46 = 0; var46 < this.rowHeights.length; ++var46) {
- if (var3.minHeight[var46] < this.rowHeights[var46]) {
- var3.minHeight[var46] = this.rowHeights[var46];
- }
- }
- }
-
- if (this.columnWeights != null) {
- for(int var47 = 0; var47 < var3.width && var47 < this.columnWeights.length; ++var47) {
- if (var3.weightX[var47] < this.columnWeights[var47]) {
- var3.weightX[var47] = this.columnWeights[var47];
- }
- }
- }
-
- if (this.rowWeights != null) {
- for(int var48 = 0; var48 < var3.height && var48 < this.rowWeights.length; ++var48) {
- if (var3.weightY[var48] < this.rowWeights[var48]) {
- var3.weightY[var48] = this.rowWeights[var48];
- }
- }
- }
-
- return var3;
- }
-
- protected void AdjustForGravity(GridBagConstraints var1, Rectangle var2) {
- var2.x += var1.insets.left;
- var2.width -= var1.insets.left + var1.insets.right;
- var2.y += var1.insets.top;
- var2.height -= var1.insets.top + var1.insets.bottom;
- int var3 = 0;
- if (var1.fill != 2 && var1.fill != 1 && var2.width > var1.minWidth + var1.ipadx) {
- var3 = var2.width - (var1.minWidth + var1.ipadx);
- var2.width = var1.minWidth + var1.ipadx;
- }
-
- int var4 = 0;
- if (var1.fill != 3 && var1.fill != 1 && var2.height > var1.minHeight + var1.ipady) {
- var4 = var2.height - (var1.minHeight + var1.ipady);
- var2.height = var1.minHeight + var1.ipady;
- }
-
- switch (var1.anchor) {
- case 10:
- var2.x += var3 / 2;
- var2.y += var4 / 2;
- return;
- case 11:
- var2.x += var3 / 2;
- return;
- case 12:
- var2.x += var3;
- return;
- case 13:
- var2.x += var3;
- var2.y += var4 / 2;
- return;
- case 14:
- var2.x += var3;
- var2.y += var4;
- return;
- case 15:
- var2.x += var3 / 2;
- var2.y += var4;
- return;
- case 16:
- var2.y += var4;
- return;
- case 17:
- var2.y += var4 / 2;
- return;
- case 18:
- return;
- default:
- throw new IllegalArgumentException("illegal anchor value");
- }
- }
-
- protected Dimension GetMinSize(Container var1, GridBagLayoutInfo var2) {
- Dimension var3 = new Dimension();
- Insets var6 = var1.insets();
- int var5 = 0;
-
- for(int var4 = 0; var4 < var2.width; ++var4) {
- var5 += var2.minWidth[var4];
- }
-
- var3.width = var5 + var6.left + var6.right;
- var5 = 0;
-
- for(int var7 = 0; var7 < var2.height; ++var7) {
- var5 += var2.minHeight[var7];
- }
-
- var3.height = var5 + var6.top + var6.bottom;
- return var3;
- }
-
- protected void ArrangeGrid(Container var1) {
- Insets var5 = var1.insets();
- int var6 = var1.countComponents();
- Rectangle var8 = new Rectangle();
- if (var6 != 0 || this.columnWidths != null && this.columnWidths.length != 0 || this.rowHeights != null && this.rowHeights.length != 0) {
- GridBagLayoutInfo var14 = this.GetLayoutInfo(var1, 2);
- Dimension var7 = this.GetMinSize(var1, var14);
- if (var7.width < var1.width || var7.height < var1.height) {
- var14 = this.GetLayoutInfo(var1, 1);
- var7 = this.GetMinSize(var1, var14);
- }
-
- this.layoutInfo = var14;
- var8.width = var7.width;
- var8.height = var7.height;
- int var10 = var1.width - var8.width;
- if (var10 != 0) {
- double var12 = (double)0.0F;
-
- for(int var9 = 0; var9 < var14.width; ++var9) {
- var12 += var14.weightX[var9];
- }
-
- if (var12 > (double)0.0F) {
- for(int var16 = 0; var16 < var14.width; ++var16) {
- int var15 = (int)((double)var10 * var14.weightX[var16] / var12);
- int[] var10000 = var14.minWidth;
- var10000[var16] += var15;
- var8.width += var15;
- if (var14.minWidth[var16] < 0) {
- var8.width -= var14.minWidth[var16];
- var14.minWidth[var16] = 0;
- }
- }
- }
-
- var10 = var1.width - var8.width;
- } else {
- var10 = 0;
- }
-
- int var11 = var1.height - var8.height;
- if (var11 != 0) {
- double var25 = (double)0.0F;
-
- for(int var17 = 0; var17 < var14.height; ++var17) {
- var25 += var14.weightY[var17];
- }
-
- if (var25 > (double)0.0F) {
- for(int var18 = 0; var18 < var14.height; ++var18) {
- int var26 = (int)((double)var11 * var14.weightY[var18] / var25);
- int[] var27 = var14.minHeight;
- var27[var18] += var26;
- var8.height += var26;
- if (var14.minHeight[var18] < 0) {
- var8.height -= var14.minHeight[var18];
- var14.minHeight[var18] = 0;
- }
- }
- }
-
- var11 = var1.height - var8.height;
- } else {
- var11 = 0;
- }
-
- var14.startx = var10 / 2 + var5.left;
- var14.starty = var11 / 2 + var5.top;
-
- for(int var3 = 0; var3 < var6; ++var3) {
- Component var2 = var1.getComponent(var3);
- GridBagConstraints var4 = this.lookupConstraints(var2);
- var8.x = var14.startx;
-
- for(int var19 = 0; var19 < var4.tempX; ++var19) {
- var8.x += var14.minWidth[var19];
- }
-
- var8.y = var14.starty;
-
- for(int var20 = 0; var20 < var4.tempY; ++var20) {
- var8.y += var14.minHeight[var20];
- }
-
- var8.width = 0;
-
- for(int var21 = var4.tempX; var21 < var4.tempX + var4.tempWidth; ++var21) {
- var8.width += var14.minWidth[var21];
- }
-
- var8.height = 0;
-
- for(int var22 = var4.tempY; var22 < var4.tempY + var4.tempHeight; ++var22) {
- var8.height += var14.minHeight[var22];
- }
-
- this.AdjustForGravity(var4, var8);
- if (var8.width > 0 && var8.height > 0) {
- if (var2.x != var8.x || var2.y != var8.y || var2.width != var8.width || var2.height != var8.height) {
- var2.reshape(var8.x, var8.y, var8.width, var8.height);
- }
-
- var2.show();
- } else {
- var2.hide();
- }
- }
-
- }
- }
- }
-